In some computer-implemented imaging-related applications (for example, computer vision, image enhancement, and object recognition), 2D image data can be used for 3D modeling. For example, information associated with a 2D image, such as light streams, shadows, and texture, can be used to determine a depth of an object, which is an essential characteristic in constructing a 3D model. In some cases, methods that use 2D data, such as light streams, shadows, and texture to calculate depth values for 3D modeling, can have high calculation complexity. In practice, a trade-off exists between accuracy of depth determination and method processing speed. On the one hand, processors with limited processing power, such as those associated with mobile devices, can have difficulty performing real-time 3D modeling using such methods. On the other hand, the accuracy of 3D modeling can be compromised if the data quantity is intentionally reduced to accommodate for processors with limited processing power.